package com.ty.service.impl;

import com.ty.bean.Role;
import com.ty.dao.MiddleDao;
import com.ty.dao.RoleDao;
import com.ty.dao.impl.MiddleDaoImpl;
import com.ty.dao.impl.RoleDaoImpl;
import com.ty.service.RoleService;

import java.util.List;

/**
 * @author 田野
 */
public class RoleServiceImpl implements RoleService {

    RoleDao roleDao = new RoleDaoImpl();
    MiddleDao middleDao = new MiddleDaoImpl();

    @Override
    public List<Role> getRoleList(int pageIndex, int pageSize) {

        return roleDao.getRoleList(pageIndex, pageSize);
    }

    @Override
    public int total() {
        return roleDao.total();
    }

    /**
     * 这个代码里面还需要考虑到事务问题。
     * 应该保证原子性和一致性。
     * @param roleName
     * @param state
     * @param ids
     * @return
     */
    @Override
    public int insertRole(String roleName, String state, String[] ids) {
        // 标记成功与否
        int success = 0;

        try {
            // 1、新增角色表
            Role role = new Role();
            role.setRoleName(roleName);
            role.setRoleState(Integer.parseInt(state));
            int i = roleDao.insertRole(role);
            // 2、新增中间表，中间表包含主键id，roleid和menuid
            // 此时ids就是menuid的数组，那么如何获得对应的roleid呢？
            // 在DBUtils中，获得预状态通道的时候，可以传入一个静态属性：新增数据的id值
            middleDao.insert(i, ids);
            success=1;
        } catch (NumberFormatException e) {
            e.printStackTrace();
        }

        return success;
    }
}
